const crypto = require('crypto')
const jwt = require("jsonwebtoken");
// 密匙
const SECRET_KEY = 'zwz-p^w^d-md5#' // 加密函数_给密码加密
const OUT_TIME = 24*60*60 // token过去时间
// const OUT_TIME = 30 // token过去时间

// md5 加密
function md5(content) {
    let md5 = crypto.createHash('md5')
    return md5.update(content).digest('hex')
}

// 加密函数_给密码加密
function genPassword(password,salt) {
    const str = `password=${password}&key=${salt}`
    return md5(str)
}

const getToken=(result)=>{
    return jwt.sign(
        {
            userData: result
        },
        md5(SECRET_KEY), // secret
        { expiresIn: OUT_TIME } // 60 * 60 s
    );
}
function parseToken(ctx) {
    const authHeader = ctx.headers['authorization'];

    if (!authHeader || !authHeader.startsWith('Bearer ')) {
        ctx.status = 401;
        ctx.body = { message: '缺少 Token' };
        return;
    }

    const token = authHeader.split(' ')[1];
    try {
        return jwt.verify(token, md5(SECRET_KEY));
    } catch (err) {
        console.error('Token 解析失败:', err.message);
        return null;
    }
}
module.exports = {
    md5,
    genPassword,
    getToken,
    parseToken,
    SECRET_KEY
}
